<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>构造函数</title>
</head>

<body>
  <script>
    // ============================== 构造函数 ==============================
    // 构造函数：是一种特殊的函数，用来创建对象（并完成初始化对象）
    // 1. 构造函数的2个约定 首字母要大写, 利用new关键字来调用函数
    function Person(){}
    // const p = new Person()
    //如果构造函数没有参数，则可以省略小括号
    const p = new Person  
    console.log(p)
    


    // 2. 构造函数创建对象说明
    // 2.1 new 关键字调用函数的行为 叫 实例化
    // 2.2 如果构造函数没有参数，则可以省略小括号
    // 2.3 构造函数里面无需写 return
    // 2.4 new Object()  new Date() 也是在实例化对象 Object() Date()是内置构造好的


    
    // 3. 给创建的对象添加属性、方法
    //    this.xxx = yyy
    function Students(username,age,gender){
      this.username = username
      this.age = age
      this.gender = gender
      this.sayHi = function(){
                console.log('hi~~~')     
        }
    }
    const xm = new Students('小明','18','男')
    const xw = new Students('小王','19','男')
    const xh = new Students('小红','17','女')
    console.log(xm,xw,xh)
    



    // 4. 练习
    /* 
      需求：
        ①：写一个Goods构造函数
        ②：里面包含属性  name  商品名称   price 价格   count 库存数量
        ③：实例化多个商品对象，并打印到控制台，例如 
            小米   1999       20    
            华为   3999       59     
            vivo   1888      100
      */

    

   function Goods(name,price,count){
    this.name = name
    this.price = price
    this.count = count
   }
   const xiaomi = new Goods('小米',1999,20)
   const huawei = new Goods('华为',3999,59)
   const vivo = new Goods('vivo',1888,100)
   console.log(xiaomi,huawei,vivo)
   


  </script>
</body>

</html>